package AccionBoton;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.List;

import modelUtil.Configuracion;
import modelUtil.Util;
import paginas.PaginaEntornoCreacionTeclados;
import plantilla.AccionBotonTO;
import plantilla.BotonTO;
import plantilla.PlantillaTO;
import util.AccionesEjecutar;
import util.PopUpConfirmarSalida;
import fachadaPlantilla.delegate.PlantillaFacade;

public class AccionGuardarTeclado implements ActionListener{
	
	private PaginaEntornoCreacionTeclados _frame;
	private Boolean _flag=false;
	private PopUpConfirmarSalida _abuelo;
	
	public AccionGuardarTeclado(PaginaEntornoCreacionTeclados frame){
		
		_frame = frame;
	}
	
	public AccionGuardarTeclado(PaginaEntornoCreacionTeclados frame,PopUpConfirmarSalida abuelo){
		
		_frame = frame;
		_abuelo = abuelo;
		_flag=true;
	}
	
	public void actionPerformed(ActionEvent e){
		
		
		PlantillaFacade fachada = new PlantillaFacade();
		PlantillaTO teclado = _frame.getTecladoTO();
		teclado.setAltoTeclado(new Integer(_frame.get_tecladoPrevisualizado().getSize().height).toString());
		teclado.setAnchoTeclado(new Integer(_frame.get_tecladoPrevisualizado().getSize().width).toString());

		List<BotonTO> botones = teclado.getListaBotones();

		
		for(int i=0; i<botones.size(); i++){
			
			String ruta = botones.get(i).getNombreIconoFichero();
			int indice = ruta.lastIndexOf("/");
			if(indice!=-1){
				File file = new File(botones.get(i).getNombreIconoFichero());
				
				try{
					
					Util.copyFile(file, new File(Configuracion.instancia().getDirUsuarioActual() + "//" + Configuracion.instancia().getTecladoActual() + "//" + file.getName()), true);

				}catch(Exception a){
					
					
				}
				botones.get(i).setNombreIconoFichero(file.getName());
				
			}
			
			List<AccionBotonTO> acciones = botones.get(i).getAccionEjecutar();
			
			for(int j=0; j<acciones.size(); j++){
				/*if(Util.BuscarClave(acciones.get(j).getAccionConcreta(), ResourceBundle.getBundle("internacionalizacion/Acciones").getKeys())==""){

				}else{*/

					if(acciones.get(j).getAccionConcreta().equals(AccionesEjecutar.AC_REP_SON)||acciones.get(j).getAccionConcreta().equals(AccionesEjecutar.AC_ET_ABRIR_DOC)){
						File file;

							file = new File(acciones.get(j).getArgumentoAccion());
						
						if(Util.RecuperarExtension(file.getAbsolutePath())!=""){
							try{
								
								Util.copyFile(file, new File(Configuracion.instancia().getDirUsuarioActual() + "//" + Configuracion.instancia().getTecladoActual() + "//" + file.getName()), true);

							}catch(Exception a){
								
								
							}

							
						}
						acciones.get(j).setArgumentoAccion(file.getName());
						
					}else{
						if(acciones.get(j).getAccionConcreta().equals(AccionesEjecutar.AC_APL_E_ABRIR_DOC)){
							File file;

							String [] accion = acciones.get(j).getArgumentoAccion().split("_Separador_");
							
							if(accion.length>1){

								file = new File(accion[1]);
								
								if(Util.RecuperarExtension(file.getAbsolutePath())!=""){
									try{
										
										Util.copyFile(file, new File(Configuracion.instancia().getDirUsuarioActual() + "//" + Configuracion.instancia().getTecladoActual() + "//" + file.getName()), true);

									}catch(Exception a){
										
										
									}

									
								}
								acciones.get(j).setArgumentoAccion(accion[0]+"_Separador_"+file.getName());}else{
									
									acciones.get(j).setArgumentoAccion(accion[0]+"_Separador_");
								}
							
				
							

						}
						
					}
					
				}
								
			//}
			
			botones.get(i).setAccionEjecutar(acciones);
		}
		_frame.setGuardado(true);
		teclado.setListaBotones(botones);
		fachada.GuardarPlantilla(teclado, Configuracion.instancia().getDirUsuarios()+ _frame.get_usuario() + "//" + _frame.get_teclado());
		
		if(_flag){
			
			_abuelo.dispose();
			_frame.dispose();
			
		}

	}

}
